(provide pc-netbook)

(batch "src/jess/funcionesComplejas.clp")
(batch "src/jess/definiciones.clp")

(defmodule pc-netbook (declare (auto-focus TRUE))
    )
(deftemplate ordenador-netbook
	(slot marca)(slot modelo)(slot procesador)(slot memoria)(slot disco)(slot grafica)
	(slot tipo_pantalla)(slot dimension_pantalla)(slot touchpad)(multislot dimensiones)(slot peso)(slot bateria)
	(slot precio)(slot url_consulta)(slot url_compra)(slot puntuacion)
)

(defrule printAll 
    (consulta (consulta netbook ?min ?max))
    ?pc<- (ordenador-netbook {puntuacion >= ?min} {puntuacion <= ?max})
    =>
    (printout t "La puntuacion del portatil " ?pc.modelo "es: " ?pc.puntuacion crlf)
    )

(set-current-module MAIN)

(defrule pc-netbook "hace los assert de los portatiles netbook"
;    (declare (salience 2)) ; mas prioritaria para que se haga antes que imprimir todos
    (consulta (consulta netbook ?min ?max))
    ?pc<-(portatil 
            (marca ?marca)(modelo ?modelo)(procesador ?procesador)(memoria ?memoria)(disco ?disco)(grafica ?grafica)
			(tipo_pantalla ?tipo_pantalla)(dimension_pantalla ?dimension_pantalla)(touchpad ?touchpad)(dimensiones ?x ?y ?z)(peso ?peso)(bateria ?bateria)
			(precio ?precio)(url_consulta ?url_consulta)(url_compra ?url_compra)
        
	)
    
    =>
      (assert (pc-netbook::ordenador-netbook 
            (puntuacion (calculaPuntuacionTotal ?pc "NETBOOK"))
            (marca ?marca)(modelo ?modelo)(procesador ?procesador)(memoria ?memoria)(disco ?disco)(grafica ?grafica)
			(tipo_pantalla ?tipo_pantalla)(dimension_pantalla ?dimension_pantalla)(touchpad ?touchpad)(dimensiones ?x ?y ?z)(peso ?peso)(bateria ?bateria)
			(precio ?precio)(url_consulta ?url_consulta)(url_compra ?url_compra)
    ))
    )